#!/bin/bash

# 参数校验与初始化
target_dir="${1:-.}"       # 支持自定义目录，默认当前目录
page_size="${2:-0}"        # 分页行数（0表示不分页）
show_metadata=0           # 元数据开关（1开启）

[ ! -d "$target_dir" ] && { echo "错误：目录不存在"; exit 1; }

# 动态解析文件编码（知乎专栏方案）
detect_encoding() {
    file -b --mime-encoding "$1" | cut -d';' -f1
}

# 带缓冲区的安全读取
process_file() {
    local file="$1"
    echo "文件名：$(realpath "$file")"
    
    [ $show_metadata -eq 1 ] && {
        echo "大小：$(du -h "$file" | cut -f1)"
        echo "修改时间：$(date -r "$file" '+%Y-%m-%d %H:%M:%S')"
    }

    encoding=$(detect_encoding "$file")
    echo "内容编码：$encoding"
    echo "---------- 内容开始 ----------"
    
    # 分页控制逻辑
    if [ "$page_size" -gt 0 ]; then
        iconv -f "$encoding" -t UTF-8//IGNORE "$file" | head -n $page_size
        echo "...（已截断前${page_size}行）"
    else
        iconv -f "$encoding" -t UTF-8//IGNORE "$file"
    fi
    
    echo "----------- 内容结束 -----------"
    echo ""
}

# 主循环（处理特殊字符的黄金方案）
export -f process_file detect_encoding
find "$target_dir" -type f -print0 | xargs -0 -I{} bash -c 'process_file "$@"' _ {}
